package com.hnkywl.sts.service.cwgl.yjyys;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.hnkywl.sts.dao.cwgl.yjyys.YjyysDao;
import com.hnkywl.sts.entity.cwgl.yjyys.Yjyys;
import com.hnkywl.sts.service.sys.YgService;
import net.ruixin.orm.hibernate.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * User: 灵韵
 * Date: 13-9-28
 * Time: 上午10:19
 * To change this template use File | Settings | File Templates.
 */
@Service
public class YjyysService {
    private YjyysDao yjyysDao;

    public String yjyysGrid(Long gsid, Long bmid, Integer nf, Integer yf, int pageNo, int pageSize) {
        Page<Map> page = yjyysDao.findPage(gsid, bmid, nf, yf, pageNo, pageSize);
        return "{\"total\":" + page.getTotalCount() + ",\"rows\":" + new GsonBuilder().setDateFormat("yyyy-MM-dd").create().toJson(page.getResult()) + "}";
    }

    @Transactional
    public void save(Yjyys yjyys) {
        if (yjyys.getBm().getId() == null) {
            yjyys.setBm(null);
        }
        if (yjyysDao.existYjyys(yjyys)) {
            throw new RuntimeException("该公司或部门已经填制数据");
        }
        yjyys.setCreateUser(YgService.getCurrentYg());
        yjyys.setZt("ybc");
        yjyysDao.save(yjyys);
    }

    @Transactional
    public void submit(Long id) {
        Yjyys yjyys = yjyysDao.get(id);
        yjyys.setZt("ytj");
        yjyysDao.save(yjyys);
    }

    @Transactional
    public void delete(Long id) {
        Yjyys yjyys = yjyysDao.get(id);
        yjyys.setDeleted(1);
        yjyys.setLastUpdated(new Date());
        yjyysDao.save(yjyys);
    }

    @Transactional
    public void sh(Long id) {
        Yjyys yjyys = yjyysDao.get(id);
        yjyys.setShzt("ysh");
        yjyys.setZt("ysh");
        yjyys.setShrq(new Date());
        yjyys.setShr(YgService.getCurrentYg());
        yjyysDao.save(yjyys);
    }

    public String findHz(Integer nf, Integer yf) {
        List<Map> list = yjyysDao.findHz(nf, yf);
        List<Map> sumList = yjyysDao.findHzSum(nf, yf);
        return "{\"total\":" + list.size() + ",\"rows\":" + new Gson().toJson(list) + ",\"footer\":"+new Gson().toJson(sumList)+"}";
    }


    public List<Map> findMx() {
        return yjyysDao.findItems(true, false);
    }

    public Yjyys findDetail(Long id) {
        return yjyysDao.get(id);
    }

    @Autowired
    public void setYjyysDao(YjyysDao yjyysDao) {
        this.yjyysDao = yjyysDao;
    }
}
